home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / p_man / cat3 / complib / slarft.z / slarft
Text File  |  1998-10-30  |  4KB  |  133 lines

  1.  
  2.  
  3.  
  4. SSSSLLLLAAAARRRRFFFFTTTT((((3333FFFF))))                                                          SSSSLLLLAAAARRRRFFFFTTTT((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SLARFT - form the triangular factor T of a real block reflector H of
  10.      order n, which is defined as a product of k elementary reflectors
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE SLARFT( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT )
  14.  
  15.          CHARACTER      DIRECT, STOREV
  16.  
  17.          INTEGER        K, LDT, LDV, N
  18.  
  19.          REAL           T( LDT, * ), TAU( * ), V( LDV, * )
  20.  
  21. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  22.      SLARFT forms the triangular factor T of a real block reflector H of order
  23.      n, which is defined as a product of k elementary reflectors.
  24.  
  25.      If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;
  26.  
  27.      If DIRECT = 'B', H = H(k) . . . H(2) H(1) and T is lower triangular.
  28.  
  29.      If STOREV = 'C', the vector which defines the elementary reflector H(i)
  30.      is stored in the i-th column of the array V, and
  31.  
  32.         H  =  I - V * T * V'
  33.  
  34.      If STOREV = 'R', the vector which defines the elementary reflector H(i)
  35.      is stored in the i-th row of the array V, and
  36.  
  37.         H  =  I - V' * T * V
  38.  
  39.  
  40. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  41.      DIRECT  (input) CHARACTER*1
  42.              Specifies the order in which the elementary reflectors are
  43.              multiplied to form the block reflector:
  44.              = 'F': H = H(1) H(2) . . . H(k) (Forward)
  45.              = 'B': H = H(k) . . . H(2) H(1) (Backward)
  46.  
  47.      STOREV  (input) CHARACTER*1
  48.              Specifies how the vectors which define the elementary reflectors
  49.              are stored (see also Further Details):
  50.              = 'R': rowwise
  51.  
  52.      N       (input) INTEGER
  53.              The order of the block reflector H. N >= 0.
  54.  
  55.      K       (input) INTEGER
  56.              The order of the triangular factor T (= the number of elementary
  57.              reflectors). K >= 1.
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSLLLLAAAARRRRFFFFTTTT((((3333FFFF))))                                                          SSSSLLLLAAAARRRRFFFFTTTT((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      V       (input/output) REAL array, dimension
  75.              (LDV,K) if STOREV = 'C' (LDV,N) if STOREV = 'R' The matrix V. See
  76.              further details.
  77.  
  78.      LDV     (input) INTEGER
  79.              The leading dimension of the array V.  If STOREV = 'C', LDV >=
  80.              max(1,N); if STOREV = 'R', LDV >= K.
  81.  
  82.      TAU     (input) REAL array, dimension (K)
  83.              TAU(i) must contain the scalar factor of the elementary reflector
  84.              H(i).
  85.  
  86.      T       (output) REAL array, dimension (LDT,K)
  87.              The k by k triangular factor T of the block reflector.  If DIRECT
  88.              = 'F', T is upper triangular; if DIRECT = 'B', T is lower
  89.              triangular. The rest of the array is not used.
  90.  
  91.      LDT     (input) INTEGER
  92.              The leading dimension of the array T. LDT >= K.
  93.  
  94. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  95.      The shape of the matrix V and the storage of the vectors which define the
  96.      H(i) is best illustrated by the following example with n = 5 and k = 3.
  97.      The elements equal to 1 are not stored; the corresponding array elements
  98.      are modified but restored on exit. The rest of the array is not used.
  99.  
  100.      DIRECT = 'F' and STOREV = 'C':         DIRECT = 'F' and STOREV = 'R':
  101.  
  102.                   V = (  1       )                 V = (  1 v1 v1 v1 v1 )
  103.                       ( v1  1    )                     (     1 v2 v2 v2 )
  104.                       ( v1 v2  1 )                     (        1 v3 v3 )
  105.                       ( v1 v2 v3 )
  106.                       ( v1 v2 v3 )
  107.  
  108.      DIRECT = 'B' and STOREV = 'C':         DIRECT = 'B' and STOREV = 'R':
  109.  
  110.                   V = ( v1 v2 v3 )                 V = ( v1 v1  1       )
  111.                       ( v1 v2 v3 )                     ( v2 v2 v2  1    )
  112.                       (  1 v2 v3 )                     ( v3 v3 v3 v3  1 )
  113.                       (     1 v3 )
  114.                       (        1 )
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.